package zhihui.mobile.manager.shop;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import zhihui.mobile.bean.shop.category.CategoryInfo;
import zhihui.mobile.config.Config;
import zhihui.mobile.interfaces.net.IHttpCallBackListener;
import zhihui.mobile.net.HttpUtils;

/**
 * Created by 张公铭 on 2017/8/23 0023.
 */

public class CategoryManager
{
    private static CategoryManager manager;
    private List<CategoryInfo> mList = new ArrayList<>();

    private CategoryManager()
    {

    }

    private synchronized static void createdIns()
    {
        if (manager == null)
        {
            manager = new CategoryManager();
        }
    }

    public static CategoryManager getInstance()
    {
        if (manager == null)
        {
            createdIns();
        }
        return manager;
    }

    public void setUiList(List<CategoryInfo> list)
    {
        if (mList == null)
        {
            mList = new ArrayList<>();
        }
        mList.clear();
        mList.addAll(list);
    }

    public List<CategoryInfo> getmList()
    {
        return mList;
    }

    public void getShopCategory(IHttpCallBackListener listener)
    {
        Map<String, String> params = new HashMap<>();
        params.put("service", "org.zhmm.app.api.Category");
        params.put("method", "getAllCategory");

        HttpUtils.postAes(Config.URL, params, null, listener);
    }

    /**
     * 初始化分类信息
     */
//    private Map<Integer, CategoryInfo> initCategory(Context context)
//    {
//        boolean isInit = SharedPreferenceUtils.getConState(context);
//        //判断解压状态
//        if (isInit)
//        {
//            try
//            {
//                ZipUtil.unZip(context, Config.confZip, FileUtils.getDir() + Config.conf, true);
//            } catch (IOException e)
//            {
//                e.printStackTrace();
//                return null;
//            }
//            SharedPreferenceUtils.setConSatet(context, false);
//        }
//
//        File dirFile = new File(FileUtils.getDir() + Config.conf);
//        if (!dirFile.exists())
//        {
//            return null;
//        }
//        File[] files = dirFile.listFiles();
//        String fileName = "";
//        String prefile = "";
//        Map<Integer, CategoryInfo> map = new HashMap<>();
//        for (File file : files)
//        {
//            if (file.isDirectory())
//            {
//                continue;
//            }
//            fileName = file.getName();
//            prefile = fileName.substring(fileName.lastIndexOf(".") + 1);
//            if (!prefile.equals("xml"))
//            {
//                continue;
//            }
//
//            try
//            {
//                FileInputStream inputStream = new FileInputStream(file);
//                XmlPullParser pullParser = Xml.newPullParser();
//                pullParser.setInput(inputStream, "UTF-8");
//                int event = pullParser.getEventType();
//                CategoryInfo categoryInfo = null;
//                while (event != XmlPullParser.END_DOCUMENT)
//                {
//                    switch (event)
//                    {
//                        case XmlPullParser.START_DOCUMENT:
//                            categoryInfo = new CategoryInfo();
//                            break;
//                        case XmlPullParser.START_TAG:
//                            if (pullParser.getName().equals("id"))
//                            {
//                                categoryInfo.setId(Integer.parseInt(pullParser.nextText()));
//                            } else if (pullParser.getName().equals("pid"))
//                            {
//                                categoryInfo.setPid(Integer.parseInt(pullParser.nextText()));
//                            } else if (pullParser.getName().equals("name"))
//                            {
//                                categoryInfo.setName(pullParser.nextText());
//                            } else if (pullParser.getName().equals("level"))
//                            {
//                                categoryInfo.setLevel(Integer.parseInt(pullParser.nextText()));
//                            } else if (pullParser.getName().equals("desc"))
//                            {
//                                categoryInfo.setDesc(pullParser.nextText());
//                            } else if (pullParser.getName().equals("img"))
//                            {
//                                categoryInfo.setImg(pullParser.nextText());
//                            }
//                            break;
//                        case XmlPullParser.END_TAG:
//                            if (pullParser.getName().equals("category"))
//                            {
//                                map.put(categoryInfo.getId(), categoryInfo);
//                            }
//                            break;
//
//                    }
//                }
//
//            } catch (FileNotFoundException e)
//            {
//                e.printStackTrace();
//            } catch (XmlPullParserException e)
//            {
//                e.printStackTrace();
//            } catch (IOException e)
//            {
//                e.printStackTrace();
//            }
//        }
//        return map;
//    }

//    public List<CategoryInfo> getUiList(Context context)
//    {
//        if (uiList != null)
//        {
//            return uiList;
//        }
//        Map<Integer, CategoryInfo> map = initCategory(context);
//
//        Map<Integer, CategoryInfo> rootMap = new HashMap<>();
//        Map<Integer, CategoryInfo> twoMap = new HashMap<>();
//        Map<Integer, CategoryInfo> thressMap = new HashMap<>();
//        for (CategoryInfo categoryInfo : map.values())
//        {
//            switch (categoryInfo.getLevel())
//            {
//                case 1:
//                    rootMap.put(categoryInfo.getId(), categoryInfo);
//                    break;
//                case 2:
//                    twoMap.put(categoryInfo.getId(), categoryInfo);
//                    break;
//                case 3:
//                    thressMap.put(categoryInfo.getId(), categoryInfo);
//                    break;
//            }
//        }
//
//        for (CategoryInfo categoryInfo : thressMap.values())
//        {
//            if (twoMap.containsKey(categoryInfo.getPid()))
//            {
//                twoMap.get(categoryInfo.getPid()).getList().add(categoryInfo);
//            }
//        }
//
//        for (CategoryInfo categoryInfo : twoMap.values())
//        {
//            if (map.containsKey(categoryInfo.getPid()))
//            {
//                map.get(categoryInfo.getPid()).getList().add(categoryInfo);
//            }
//        }
//         uiList.addAll(map.values());
//        return uiList;
//    }
}
